package br.com.exemplo.vendas.negocio.ejb ;

import java.rmi.RemoteException;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import br.com.exemplo.vendas.negocio.dao.DaoFactory;
import br.com.exemplo.vendas.negocio.ejb.interfaces.ItemLocal;
import br.com.exemplo.vendas.negocio.ejb.interfaces.ItemRemote;
import br.com.exemplo.vendas.negocio.entity.Item;
import br.com.exemplo.vendas.negocio.model.vo.ItemVO;
import br.com.exemplo.vendas.negocio.model.vo.ProdutoVO;
import br.com.exemplo.vendas.negocio.model.vo.ReservaVO;
import br.com.exemplo.vendas.util.dto.ServiceDTO;
import br.com.exemplo.vendas.util.exception.LayerException;

@Stateless
public class ItemBean implements ItemRemote, ItemLocal
{
	@PersistenceContext( unitName = "Vendas" )
	EntityManager em ;
	
	@Override
	public ServiceDTO listarItens(ServiceDTO requestDTO) throws LayerException,
			RemoteException {
		
		ServiceDTO responseDTO = new ServiceDTO( ) ;
		Item item= null ;
		List<Item> lista = DaoFactory.getItemDAO( em ).listarItens();
		ItemVO[] listaItens = null;
		
		if (( lista != null ) && ( !lista.isEmpty() ))
		{
			listaItens = new ItemVO[lista.size()];
			for (int i = 0; i < lista.size( ); i++)
			{
				item = (Item) lista.get( i ) ;
				ItemVO itemVO = new ItemVO(item.getId(), null, null, item.getQuantidade(), 
						item.getValor(), item.getSituacao());
				ReservaVO reservaVO = new ReservaVO();
				reservaVO.setCodigo(item.getReserva().getCodigo());
				ProdutoVO produtoVO = new ProdutoVO(null, null, item.getProduto().getDescricao(), null, null);
				itemVO.setReserva(reservaVO);
				itemVO.setProduto(produtoVO);
				listaItens[ i ] = itemVO ;
			}
		}
		responseDTO.set( "listaPedido", listaItens ) ;
		responseDTO.set( "resposta", new Boolean( true ) ) ;
		
		return responseDTO ;
	}
	
}
